import { defineStore } from "pinia";
import { Config } from "./type";
import { stringToBoolean } from "@/utils/common";
const useConfigStore = defineStore("sys_config", {
    state: () => ({
        config: <Array<Config>>[],
    }),
    actions: {
        // 获取系统参数
        getConfig(_key: string) {
            if (_key == null && _key == "") {
                return null;
            }
            try {
                for (let i = 0; i < this.config.length; i++) {
                    if (this.config[i].key == _key) {
                        return this.config[i];
                    }
                }
            } catch (e) {
                return null;
            }
        },
        // 获取系统参数
        getConfigValue(_key: string) {
            if (_key == null && _key == "") {
                return null;
            }
            try {
                for (let i = 0; i < this.config.length; i++) {
                    if (this.config[i].key == _key) {
                        return this.config[i].value;
                    }
                }
            } catch (e) {
                return null;
            }
        },
        // 获取系统参数的额外参数
        getConfigParams(_key: string) {
            if (_key == null && _key == "") {
                return null;
            }
            try {
                for (let i = 0; i < this.config.length; i++) {
                    if (this.config[i].key == _key) {
                        return this.config[i].params;
                    }
                }
            } catch (e) {
                return null;
            }
        },
        // 获取系统参数
        getConfigRow(_key: string) {
            if (_key == null && _key == "") {
                return null;
            }
            try {
                for (let i = 0; i < this.config.length; i++) {
                    if (this.config[i].key == _key) {
                        return this.config[i].row;
                    }
                }
            } catch (e) {
                return null;
            }
        },
        // 设置系统参数
        setConfig(_key: string, value: any, data?: any) {
            if (_key !== null && _key !== "") {
                this.config.push({
                    key: _key,
                    value: stringToBoolean(value),
                    params: data?.configParams,
                    row: data,
                });
            }
        },
        // 删除系统参数
        removeConfig(_key: string) {
            let bln = false;
            try {
                for (let i = 0; i < this.config.length; i++) {
                    if (this.config[i].key == _key) {
                        this.config.splice(i, 1);
                        return true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        },
        // 清空系统参数
        cleanConfig() {
            this.config = [];
        },
        // 初始系统参数
        initConfig(list: Array<any>) {
            const enumArray = <Array<string>>[];
            this.config.forEach((item) => {
                enumArray.push(item["key"]);
            });
            list.forEach((item: any) => {
                if (!enumArray.includes(item["configKey"])) {
                    let configParam;
                    try {
                        configParam = item.configParam ? JSON.parse(item.configParam) : null;
                    } catch (e) {
                        configParam = null;
                    }
                    this.config.push({
                        key: item.configKey,
                        value: stringToBoolean(item.configValue),
                        params: configParam,
                        row: item,
                    });
                }
            });
        },
    },
});

export default useConfigStore;
